/****************************************************************************
	This file is part of Basqet.

	Basqet is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	Basqet is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
    along with Basqet.  If not, see <http://www.gnu.org/licenses/>.

****************************************************************************/

#ifndef OUTLINEVIEW_H
#define OUTLINEVIEW_H

#include "treeview.h"

#include <QObject>
#include <QDir>
#include <QPointer>
#include <QMenu>

class QFileSystemModel;
class BasketManager;

class OutlineView : public TreeView
{
	Q_OBJECT

	public:
		OutlineView(QWidget* parent = 0);

		QDir getDataRoot();

	protected slots:
		void outlineContextMenu(QPoint click);
		void outlineContextMenuClose();


		void createBasket();
		void createRootBasket();

		void basketSelected(const QModelIndex & index);

		void renameBasket();
		void deleteBasket();

	signals:
		void LoadBasket(QFileInfo basket);
		void aboutToChangeBasket(QFileInfo basket);
		void basketChanged(QFileInfo oldBasket, QFileInfo newBasket);

	private:
		void setupRootDir();
		void setupOutline();
		void setupContextMenu();

		void removeRecursive(QFileInfo base);

	private:

		QDir						mDataRoot;
		QPointer<QFileSystemModel>	mFileModel;
//		QPointer<BasketManager>		mCurrentBasket;

		QPointer<QMenu>				mBasketContextMenu;
		QPointer<QMenu>				mRootMenu;

		QModelIndex					mContextMenuItem;

};

#endif // OUTLINEVIEW_H
